package com.dy.design_pattern_study.bridge_pattern.dome1;

import com.dy.design_pattern_study.bridge_pattern.dome1.son.son2.HandsetBrandMAddressList;
import com.dy.design_pattern_study.bridge_pattern.dome1.son.son2.HandsetBrandMGame;
import com.dy.design_pattern_study.bridge_pattern.dome1.son.son2.HandsetBrandNAddressList;
import com.dy.design_pattern_study.bridge_pattern.dome1.son.son2.HandsetBrandNGame;

/**
 * @CreateBy zhangdingyi
 * @Date 2023-04-18
 * @Content
 */
public class client {
    public static void main(String[] args) {

            //创建一个父类 可以从子类中获取不同的功能
            HandsetBrand ab;
            ab = new HandsetBrandMAddressList();
            ab.runHandset();

            ab = new HandsetBrandMGame();
            ab.runHandset();

            ab = new HandsetBrandNAddressList();
            ab.runHandset();

            ab = new HandsetBrandNGame();
            ab.runHandset();

            /*
                但如果 每个品牌都增加一个MP3音乐播放功能
                又来了一家新的手机品牌‘S
                则需要 增加‘手机品牌S’类和三个下属功能子类


                1.对象的继承关系是在编译时就定义好了，所以无法在运行时改变从父类继承的实现。
                2.子类的实现与它的父类有非常紧密的依赖关系，以至于父类实现中的任何变化必然会导致子类发生变化。
                3.当你需要复用子类时，如果继承下来的实现不适合解决新的问题，则父类必须重写或被其他更适合的类替换。
                4.这种依赖关系限制了灵活性并最终限制了复用性
                简单的说就是
                   父子关系的依赖性限制了子类的拓展
                   该功能就是如此，手机有多种品牌，这种继承实现的方式极大的限制了手机功能的拓展
             */


    }
}
